Skip to content

Release: promote develop to main#197

Merged
ptr727 merged 4 commits into
mainfrom
develop
Jun 26, 2026
Merged

Release: promote develop to main#197
ptr727 merged 4 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Promotes the current develop head to main for release.

Contents:

Standard release promotion: merge commit (not squash). A separate publish-release.yml dispatch performs the actual release after this lands — the workflow fixes must be on main for the publish to use them.

🤖 Generated with Claude Code

ptr727 and others added 4 commits June 25, 2026 09:41
Converge LanguageTags with the ProjectTemplate hub and work this repo's
sync task list.

## What this PR does

- **Carry-whole shared artifacts.** `.editorconfig` and `CODESTYLE.md`
are re-applied verbatim from the template (every section, including
blocks inert in this .NET-only repo), so re-sync stays a clean overwrite
rather than a per-section merge. Only the documented in-section repo
placeholders are adapted: the .NET project-folder list,
`InternalsVisibleTo` names, and VS Code task labels.
- **Conform orchestration workflows to the template.**
`merge-bot-pull-request.yml` keys concurrency on the PR number;
`build-release-task.yml` re-adopts the main-only release-version
backstop; `get-version-task.yml` drops a stray comment to restore
byte-exact verbatim; `build-datebadge-task.yml` + `publish-release.yml`
adopt the caller-gated date-badge model (also fixing a pre-existing
`SC2086`). Action pins confirmed identical to the template.
- **EOL pins.** `.gitattributes` carries the template's `*.sh` +
Dockerfile LF pins and adds one repo-specific LF pin:
`.husky/pre-commit` (extensionless hook; a CRLF shebang breaks
execution). `LanguageData/` holds downloaded source data the parser
reads byte-for-byte; it is left untouched under the `* -text` default
(no `text`/`eol=` rule), so `LanguageData/iso6392` stays exactly as
downloaded (CRLF preserved) - it is deliberately *not* forced to LF.
Workflow YAML stays CRLF, matching the template.
- **Docs.** AGENTS.md gains a "Template adaptations" block recording the
genuine deviations below; sync-doc bullets align with the carry-whole
rule.

## Documented adaptations (for review)

The only intentional deviations from the carried template state.
Everything else tracks the template verbatim.

- **Husky.Net pre-commit gate.** This repo wires the clean-compile
checks as local Husky.Net pre-commit git hooks (`dotnet tool restore` +
`dotnet husky install`); the template ships no git hooks and treats CI
as the only lint backstop. `CODESTYLE.md`'s git-hook note and the
`.vscode/tasks.json` convenience-task set are adapted accordingly. CI
still runs the same checks.
- **Codegen via the `LanguageTagsCreate` CLI, no `NINJA_API_KEY`.**
Embedded language data is regenerated by the in-repo
`LanguageTagsCreate/` tool pulling directly from the official ISO
639-2/3 + RFC 5646 registries. There is no external codegen API, so this
repo carries no `NINJA_API_KEY` secret or any reference to one.
- **`merge-upstream-version` job legitimately absent.**
`merge-bot-pull-request.yml` carries only `merge-dependabot`,
`merge-codegen`, and `disable-auto-merge-on-maintainer-push`. The
template's `merge-upstream-version` job auto-merges an
upstream-version-bump flow this repo does not run (LanguageTags pins no
upstream binary version). Concurrency keying and the three carried jobs
match the template verbatim.

## Validation

- actionlint: clean
- markdownlint: 0 errors

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…up (#192)

Bumps the actions-deps group with 1 update:
[actions/setup-dotnet](https://github.com/actions/setup-dotnet).

Updates `actions/setup-dotnet` from 5.3.0 to 5.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-dotnet/releases">actions/setup-dotnet's
releases</a>.</em></p>
<blockquote>
<h2>v5.4.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements</h3>
<ul>
<li>Improve global.json SDK version validation for rollForward by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/742">actions/setup-dotnet#742</a></li>
<li>Pin actions to commit SHAs in workflows by <a
href="https://github.com/priya-kinthali"><code>@​priya-kinthali</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/744">actions/setup-dotnet#744</a></li>
<li>Expand the CSC problem matcher to light up more errors on GitHub. by
<a
href="https://github.com/StephenCleary"><code>@​StephenCleary</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/717">actions/setup-dotnet#717</a></li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Docs(action): Explicitly mark all optional inputs with required:
false by <a
href="https://github.com/kranthipoturaju"><code>@​kranthipoturaju</code></a>
in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/737">actions/setup-dotnet#737</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>Fix global.json creation command by <a
href="https://github.com/michal2612"><code>@​michal2612</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/694">actions/setup-dotnet#694</a></li>
</ul>
<h3>Dependency Updates</h3>
<ul>
<li>Upgrade <code>@​actions/cache</code> to 5.1.0, log cache write
denied by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/746">actions/setup-dotnet#746</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/jasongin"><code>@​jasongin</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/746">actions/setup-dotnet#746</a></li>
<li><a
href="https://github.com/michal2612"><code>@​michal2612</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/694">actions/setup-dotnet#694</a></li>
<li><a
href="https://github.com/kranthipoturaju"><code>@​kranthipoturaju</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/737">actions/setup-dotnet#737</a></li>
<li><a
href="https://github.com/StephenCleary"><code>@​StephenCleary</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-dotnet/pull/717">actions/setup-dotnet#717</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-dotnet/compare/v5...v5.4.0">https://github.com/actions/setup-dotnet/compare/v5...v5.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-dotnet/commit/26b0ec14cb23fa6904739307f278c14f94c95bf1"><code>26b0ec1</code></a>
Expand the CSC problem matcher to light up more errors on GitHub. (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/717">#717</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/da5e5482f2d0700168cff080da45b50da8b60f0e"><code>da5e548</code></a>
docs(action): explicitly mark all optional inputs with required: false
(<a
href="https://redirect.github.com/actions/setup-dotnet/issues/737">#737</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/9bd3b44355ba7c500f3d2e029636c6d29ac5caab"><code>9bd3b44</code></a>
Improve readability of global.json creation command (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/694">#694</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/4406a635cd2be9c92689ea22b2f74ea57297088c"><code>4406a63</code></a>
Bump <code>@​actions/cache</code> to 5.1.0, log cache write denied (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/746">#746</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/dc3262dda80e97f1c7865b3b122e99240e30b738"><code>dc3262d</code></a>
pin actions to commit SHAs in workflows (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/744">#744</a>)</li>
<li><a
href="https://github.com/actions/setup-dotnet/commit/95a3f8b067437dc9b2027a437f5dc3b4569ddd49"><code>95a3f8b</code></a>
Validate global.json SDK version before rollForward optimization (<a
href="https://redirect.github.com/actions/setup-dotnet/issues/742">#742</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-dotnet/compare/9a946fdbd5fb07b82b2f5a4466058b876ab72bb2...26b0ec14cb23fa6904739307f278c14f94c95bf1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-dotnet&package-manager=github_actions&previous-version=5.3.0&new-version=5.4.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Resolve #175 - match a UN M.49 region group against a contained region,
e.g. es-419 (Latin America) matches es-MX (Mexico).

Adds the CLDR-sourced UnM49Data dataset, an opt-in
IsMatch(prefix, tag, regionContainment) overload, ExpandRegion, and a
parser fix so a numeric region after the language parses as a region.
Restores trimmed parser/lookup comments. Bumps version to 1.4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Re-sync of the #213/#214/#217 workflow fixes from ptr727/ProjectTemplate
(PRs #215/#216/#218), adapted to this single-target NuGet repo.

- develop leg is versioned against its own branch (NBGV prerelease tag no
  longer stripped); validate-release entry gate enforces it both directions.
- Surgical, condition-gated cleanup of only the consumed release-asset-* artifacts;
  blanket cleanup job removed.

Closes #195.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 26, 2026 20:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This release-promotion PR brings the current develop head to main, shipping the UN M.49 region containment feature (plus parser/matching updates) and synchronizing the release workflow fixes required for publishing from main.

Changes:

  • Bump version floor to 1.4 and update release notes/docs to describe UN M.49 containment matching and region expansion.
  • Add CLDR-sourced UN M.49 containment dataset + APIs (IsMatch(..., regionContainment) and ExpandRegion) with accompanying tests.
  • Re-sync / adjust GitHub Actions workflows for correct develop/main version classification and more targeted artifact handling.

Reviewed changes

Copilot reviewed 24 out of 25 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
version.json Bump version floor to 1.4.
README.md Update release notes and add UN M.49 containment usage/docs; refactor link definitions.
HISTORY.md Add 1.4 release notes entry.
CODESTYLE.md Template re-sync: carry-whole guidance and expanded general/tooling language.
AGENTS.md Template re-sync: update workflow/process guidance and template-carry notes.
LanguageTags/UnM49Data.cs Add UN M.49 containment loader (CLDR XML) + JSON/codegen helpers + containment queries.
LanguageTags/UnM49DataGen.cs Generated embedded UN M.49 containment dataset.
LanguageData/unm49.json Generated UN M.49 JSON dataset.
LanguageTags/LanguageLookup.cs Add UN M.49-backed containment matching overload and ExpandRegion.
LanguageTags/LanguageTagParser.cs Fix extlang validation to 3 alpha to avoid mis-parsing numeric regions (e.g., es-419).
LanguageTags/LanguageSchema.cs Add UnM49Data to the source-gen JSON context.
LanguageTagsCreate/CreateTagData.cs Extend codegen tool to download/convert/generate UN M.49 data.
LanguageTagsTests/UnM49Tests.cs New dataset and containment tests for UN M.49 data.
LanguageTagsTests/LanguageLookupTests.cs New theories for region containment matching and ExpandRegion.
.github/workflows/get-version-task.yml Thread logical branch into NBGV classification to prevent develop publishing as stable.
.github/workflows/build-release-task.yml Add validate-release gate and surgical deletion of consumed release-asset-* artifacts.
.github/workflows/build-nugetlibrary-task.yml Thread branch through to versioning.
.github/workflows/publish-release.yml Grant actions: write to enable surgical artifact cleanup; adjust badge invocation gating.
.github/workflows/test-pull-request.yml Update action pin; remove blanket artifact cleanup job.
.github/workflows/run-codegen-pull-request-task.yml Update action pin.
.github/workflows/build-datebadge-task.yml Simplify gating (caller-gated) and update BYOB action pin.
.github/workflows/merge-bot-pull-request.yml Fix concurrency grouping under pull_request_target to key on PR number.
.gitattributes Add explicit LF pinning rules for execution-sensitive files (e.g., .sh, Dockerfiles, husky hook).
.editorconfig Add LF rule for Dockerfiles.

Comment thread LanguageTags/UnM49Data.cs
// <territoryContainment>
// <group type="419" contains="013 029 005" grouping="true"/>
// <group type="013" contains="BZ CR GT HN MX NI PA SV"/>
// Numeric types are UN M.49 region codes, 2 letter values are ISO 3166-1 country codes
Comment on lines 15 to 19
private readonly Iso6392Data _iso6392 = Iso6392Data.Create();
private readonly Iso6393Data _iso6393 = Iso6393Data.Create();
private readonly Rfc5646Data _rfc5646 = Rfc5646Data.Create();
private readonly UnM49Data _unM49 = UnM49Data.Create();
private readonly List<(string ietf, string iso)> _overrides = [];
@ptr727 ptr727 merged commit ef05e9e into main Jun 26, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants